/*
Copyright (c) [2019年5月1日] [吴超]
[MBT_Studio] is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
		 http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details.
*/
#pragma once

#include "../节点.h"
#include <面/面.h>


void f_node_所有调试类节点JIT初始化();




class C_调试输出节点 : public C_节点基类 {

public:
	C_调试输出节点(S_设备环境& ctx);
	~C_调试输出节点();
	
	std::vector<S_Props> m_Props;
	bool	f_update();
	
	C_插座基类*	f_动态添加插座(E_插座方向 方向);
	void		f_输出数据(E_值类型 type, void* data);
};

C_节点基类* f_node_创建信息输出节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_载入信息输出节点(S_设备环境& ctx, FILE* f);
void		f_node_保存信息输出节点(C_节点基类* n, FILE* f);




class C_几何预览节点 : public C_节点基类 {
	S_物体*		m_Ob;
public:
	C_几何预览节点(S_设备环境& ctx);
	~C_几何预览节点();

	std::vector<S_Mesh*>	m_Meshs;
	std::vector<E_值类型>	m_值类型;

	bool			f_update();
	//S_插座增减方式	f_动态增减插座(E_插座方向 方向);

	S_物体* f_get虚拟体();
	void	f_入回收();
	void	f_回收();
};


C_节点基类* f_node_载入几何预览节点(S_设备环境& ctx, FILE* f);
void		f_node_保存几何预览节点(C_节点基类* n, FILE* f);




class C_控制台输出节点 : public C_节点基类 {
public:
	C_控制台输出节点(S_设备环境& ctx);
	~C_控制台输出节点();

	S_Props m_字符串;

	bool		f_update();
	std::string DEF_节点编译函数;

	void	f_读取(FILE* f);
	void	f_写入(FILE* f);
};

C_节点基类* f_node_创建控制台输出节点(S_设备环境& ctx, C_节点树* 子节点树);
C_节点基类* f_node_加载控制台输出节点(S_设备环境& ctx, FILE* f);
void		f_node_保存控制台输出节点(C_节点基类* n, FILE* f);


